package main

import (
	"fmt"
	"math/rand"
	"sync"
	"time"
)

var wg sync.WaitGroup

func init() {
	rand.Seed(time.Now().UnixNano())
}

//func main()  {
//	//创建一个无缓冲的通道
//	court := make(chan int)
//	//计数加2， 表示等到两个goroutine
//	wg.Add(2)
//	//启动两个选手
//	go player("Nadal", court)
//	go player("Djokovic", court)
//	// 发球
//	court <- 1
//	//等待该游戏结束
//	wg.Wait()
//
//}

func player(name string, court chan int) {
	// 在函数退出时调用Done 来通知main 函数工作已经完成
	defer wg.Done()
	for {
		//等待球被打击过来
		ball, ok := <-court
		if !ok {
			//如果通道被关闭，我们就赢了
			fmt.Printf("Player %s Won \b", name)
			return
		}
		//选随机数，然后用这个数来判断我们是否丢球
		n := rand.Intn(100)
		if n%13 == 0 {
			fmt.Printf("player %s Missed \n", name)
			//关闭通道
			close(court)
			return
		}
		//显示击球数，并将击球数+1
		fmt.Printf("Player %s Hit %d \n", name, ball)
		ball++
		// 将球打向对手
		court <- ball
	}

}
